///**
// * $version:  0.1 
// * $Date: 2011-01-21 
// *
// * Copyright (C) 2010-2011 Jawa Software. All rights reserved.
// *
// */
//package com.jinrui.sys.servlet;
//
//import java.io.IOException;
//import java.sql.SQLException;
//import java.util.ArrayList;
//import java.util.Iterator;
//import java.util.List;
//
//import javax.servlet.ServletException;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//
//import org.apache.commons.codec.digest.DigestUtils;
//import org.apache.commons.lang.StringUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import org.jawa.util.JdbcUtils;
//import org.jawa.util.JawaConstants;
//import com.jinrui.sys.model.MenuComponent;
//import com.jinrui.sys.model.MenuRepository;
//import com.jinrui.sys.model.db.Empl;
//import com.jinrui.sys.model.db.Menu;
//import com.jinrui.sys.service.EmplManager;
//
///**
// * 用户登录控制
// */
//public final class LoginServlet extends HttpServlet {
//
//	private static final long serialVersionUID = -2981382345590777441L;
//
//	private static final Logger Log = LoggerFactory.getLogger(LoginServlet.class);
//
//	// 登录验证页面
//	private static String FORM_LOGIN_PAGE = null;
//	// 登录出错页面
//	private static String FORM_ERROR_PAGE = null;
//	// 登录成功页面
//	private static String FORM_TARGET_PAGE = null;
//
//	/**
//	 * 获取与初始化系统登录的参数.
//	 * 
//	 * @throws ServletException
//	 *             if the init parameters are invalid or any other problems occur during initialisation
//	 */
//	public void init() throws ServletException {
//		FORM_LOGIN_PAGE = getInitParameter("form-login-page");
//		FORM_ERROR_PAGE = getInitParameter("form-error-page");
//		FORM_TARGET_PAGE = getInitParameter("form-target-page");
//
//		Log.debug("登录验证页面: " + FORM_LOGIN_PAGE);
//		Log.debug("登录出错页面: " + FORM_ERROR_PAGE);
//		Log.debug("登录成功页面: " + FORM_TARGET_PAGE);
//	}
//
//	/**
//	 * 将用户的请求路由至 'execute' 方法.
//	 * 
//	 * @param request
//	 *            The HTTP request we are processing
//	 * @param response
//	 *            The HTTP response we are creating
//	 * 
//	 * @exception IOException
//	 *                if an input/output error occurs
//	 * @exception ServletException
//	 *                if a servlet exception occurs
//	 */
//	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
//		execute(request, response);
//	}
//
//	/**
//	 * 将用户的请求路由至 'execute' 方法.
//	 * 
//	 * @param request
//	 *            The HTTP request we are processing
//	 * @param response
//	 *            The HTTP response we are creating
//	 * 
//	 * @exception IOException
//	 *                if an input/output error occurs
//	 * @exception ServletException
//	 *                if a servlet exception occurs
//	 */
//	public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
//		execute(request, response);
//	}
//
//	/**
//	 * 处理http 请求.
//	 * 
//	 * @param request
//	 *            The HTTP request we are processing
//	 * @param response
//	 *            The HTTP response we are creating
//	 * 
//	 * @exception IOException
//	 *                if an input/output error occurs
//	 * @exception ServletException
//	 *                if a servlet exception occurs
//	 */
//	public void execute(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
//		HttpSession session = request.getSession(true);
//		String username = StringUtils.trimToEmpty(request.getParameter("j_username"));
//		String password = StringUtils.trimToEmpty(request.getParameter("j_password"));
//		boolean loginSuccess = false;
//		EmplManager emplManager = EmplManager.getInstance();
//		Empl empl = null;
//		try {
//			Log.debug("开始验证用户: '" + username + "'");
//			empl = emplManager.loadEmplByLoginName(username);
//			if (null != empl && StringUtils.equals(empl.getPasswd(), DigestUtils.md5Hex(password))) {
//				loginSuccess = true;
//			} else {
//				// 用户不存在或密码不正确
//				loginSuccess = false;
//			}
//		} catch (Exception e) {
//			Log.debug("用户登录时发生异常: '" + username + "'", e);
//			loginSuccess = false;
//		}
//
//		if (loginSuccess) {
//			// 登录成功，将用户信息放入 session 中
//			session.setAttribute(JawaConstants.USER_KEY, empl);
//			// 初始化用户参数
//			Log.debug("验证用户'" + username + "'成功,初始化用户参数信息!");
//			initUserParameters(request, response, empl);
//			Log.debug("验证用户'" + username + "'成功,转入成功页面!");
//			// 转向定义的成功页面
//			response.sendRedirect(request.getContextPath() + response.encodeRedirectURL(FORM_TARGET_PAGE));
//		} else {
//			Log.debug("验证用户'" + username + "'失败,转入错误页面! ");
//			// 转向定义的失败页面
//			response.sendRedirect(request.getContextPath() + response.encodeRedirectURL(FORM_ERROR_PAGE));
//		}
//	}
//
//	/**
//	 * 初始化用户信息。
//	 * 
//	 * @param request
//	 * @param response
//	 */
//	private void initUserParameters(HttpServletRequest request, HttpServletResponse response, Empl empl) {
//		HttpSession session = request.getSession();
//
//		// 初始化用户的菜单信息并放入session中
//		List emplMenus = new ArrayList();
//		try {
//			emplMenus = JdbcUtils.queryToBeanList(Menu.class, "SELECT * FROM MENU A WHERE A.MENU_ID IN(SELECT MENU_ID FROM PRIV A WHERE A.ROLE_ID=?)", empl.getRole_id());
//		} catch (SQLException e) {
//			Log.error("查询用户菜单出错!", e);
//		}
//
//		MenuRepository repository = new MenuRepository();
//		for (Iterator iterator = emplMenus.iterator(); iterator.hasNext();) {
//			Menu menu = (Menu) iterator.next();
//			MenuComponent mc = new MenuComponent();
//			mc.setMenu_id(menu.getMenu_id());
//			mc.setPid(menu.getPid());
//			Long menuParent = menu.getPid();
//			if (menuParent != null) {
//				MenuComponent parentMenu = repository.getMenu(menuParent);
//				if (parentMenu == null) {
//					parentMenu = new MenuComponent();
//					parentMenu.setMenu_id(menuParent);
//					repository.addMenu(parentMenu);
//				}
//				mc.setParent(parentMenu);
//			}
//			mc.setMenu_id(menu.getMenu_id());
//			mc.setMenuname(menu.getMenuname());
//			if (StringUtils.isNotEmpty(menu.getMenuurl())) {
//				mc.setMenuurl(request.getContextPath() + menu.getMenuurl());
//			}
//			repository.addMenu(mc);
//		}
//
//		session.setAttribute(JawaConstants.MENU_REPOSITORY_KEY, repository);
//
//	}
//
//}
